/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * CadastroMidias.java
 *
 * Created on 27/11/2011, 23:13:16
 */
package acervo.view;

import acervo.control.Controle;
import acervo.model.CdAplicativo;
import acervo.model.CdMusica;
import acervo.model.DvdAplicativo;
import acervo.model.DvdFilme;
import acervo.model.DvdMusica;
import acervo.model.Hd;
import acervo.model.Livro;
import acervo.model.Midia;
import acervo.model.Pdf;
import acervo.model.Revista;
import acervo.model.TextoImpresso;
import acervo.util.Tela;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;

/**
 *
 * @author Fernando
 */
public class CadastroMidias extends javax.swing.JPanel {    

    /** Creates new form CadastroMidias */
    public CadastroMidias() {
        initComponents();
    }
    
    private void DesabilitaCamposOpcionais(){
        Tela.DesabilitaCampos(labelAutor, 
                              labelGenero, 
                              labelArtista, 
                              labelEditora, 
                              labelNEdicao, 
                              tfAutor, 
                              tfGenero, 
                              tfArtista, 
                              tfEditora, 
                              tfNEdicao);      
    }

    private void LimparTodosCampos(){
        Tela.LimparCampos(tfTitulo, 
                          tfLocal,                           
                          tfGenero, 
                          tfArtista, 
                          tfAutor, 
                          tfEditora, 
                          tfNEdicao);
        Tela.LimparCampos(taObs);        
        cbMidias.setSelectedIndex(0); 
    }
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelTitulo = new javax.swing.JPanel();
        labelTitulo = new javax.swing.JLabel();
        filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(65, 0), new java.awt.Dimension(20, 32767));
        tfTitulo = new javax.swing.JTextField();
        panelLocal = new javax.swing.JPanel();
        labelLocal = new javax.swing.JLabel();
        filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(28, 0), new java.awt.Dimension(5, 32767));
        tfLocal = new javax.swing.JTextField();
        panelObs = new javax.swing.JPanel();
        labelObs = new javax.swing.JLabel();
        filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(17, 0), new java.awt.Dimension(5, 32767));
        spObs = new javax.swing.JScrollPane();
        taObs = new javax.swing.JTextArea();
        panelBotoes = new javax.swing.JPanel();
        filler5 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
        botaoCadastrar = new javax.swing.JButton();
        filler7 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 32767));
        botaoLimpar = new javax.swing.JButton();
        filler6 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
        labelCampOb = new javax.swing.JLabel();
        panelCategoria = new javax.swing.JPanel();
        labelCategoria = new javax.swing.JLabel();
        filler8 = new javax.swing.Box.Filler(new java.awt.Dimension(50, 0), new java.awt.Dimension(40, 0), new java.awt.Dimension(50, 32767));
        cbMidias = new javax.swing.JComboBox();
        panelOptional1 = new javax.swing.JPanel();
        labelGenero = new javax.swing.JLabel();
        filler11 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(52, 0), new java.awt.Dimension(20, 32767));
        tfGenero = new javax.swing.JTextField();
        filler10 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 32767));
        labelArtista = new javax.swing.JLabel();
        filler12 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(20, 32767));
        tfArtista = new javax.swing.JTextField();
        panelOpcional2 = new javax.swing.JPanel();
        labelAutor = new javax.swing.JLabel();
        filler13 = new javax.swing.Box.Filler(new java.awt.Dimension(55, 0), new java.awt.Dimension(60, 0), new java.awt.Dimension(55, 32767));
        tfAutor = new javax.swing.JTextField();
        filler14 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 32767));
        labelEditora = new javax.swing.JLabel();
        filler16 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767));
        tfEditora = new javax.swing.JTextField();
        filler15 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(10, 32767));
        labelNEdicao = new javax.swing.JLabel();
        filler17 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767));
        tfNEdicao = new javax.swing.JTextField();

        setPreferredSize(new java.awt.Dimension(600, 400));
        setLayout(null);

        panelTitulo.setLayout(new javax.swing.BoxLayout(panelTitulo, javax.swing.BoxLayout.LINE_AXIS));

        labelTitulo.setText("Título:");
        panelTitulo.add(labelTitulo);
        panelTitulo.add(filler1);
        panelTitulo.add(tfTitulo);

        add(panelTitulo);
        panelTitulo.setBounds(10, 50, 570, 20);

        panelLocal.setLayout(new javax.swing.BoxLayout(panelLocal, javax.swing.BoxLayout.LINE_AXIS));

        labelLocal.setText("*Localização:");
        panelLocal.add(labelLocal);
        panelLocal.add(filler2);

        tfLocal.setColumns(50);
        panelLocal.add(tfLocal);

        add(panelLocal);
        panelLocal.setBounds(10, 90, 570, 20);

        panelObs.setLayout(new javax.swing.BoxLayout(panelObs, javax.swing.BoxLayout.LINE_AXIS));

        labelObs.setText("*Observações:");
        panelObs.add(labelObs);
        panelObs.add(filler4);

        taObs.setColumns(20);
        taObs.setRows(5);
        spObs.setViewportView(taObs);

        panelObs.add(spObs);

        add(panelObs);
        panelObs.setBounds(10, 130, 570, 96);

        panelBotoes.setLayout(new javax.swing.BoxLayout(panelBotoes, javax.swing.BoxLayout.LINE_AXIS));
        panelBotoes.add(filler5);

        botaoCadastrar.setText("Cadastrar");
        botaoCadastrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoCadastrarActionPerformed(evt);
            }
        });
        panelBotoes.add(botaoCadastrar);
        panelBotoes.add(filler7);

        botaoLimpar.setText("Limpar");
        botaoLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoLimparActionPerformed(evt);
            }
        });
        panelBotoes.add(botaoLimpar);
        panelBotoes.add(filler6);

        add(panelBotoes);
        panelBotoes.setBounds(10, 343, 570, 20);

        labelCampOb.setFont(new java.awt.Font("Tahoma", 3, 12));
        labelCampOb.setForeground(new java.awt.Color(255, 0, 0));
        labelCampOb.setText("*Campos Obrigatórios");
        add(labelCampOb);
        labelCampOb.setBounds(10, 380, 140, 20);

        panelCategoria.setLayout(new javax.swing.BoxLayout(panelCategoria, javax.swing.BoxLayout.X_AXIS));

        labelCategoria.setText("Categoria:");
        panelCategoria.add(labelCategoria);
        panelCategoria.add(filler8);

        cbMidias.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Escolha...", "CD de Aplicativo", "CD de Música", "DVD de Aplicativo", "DVD de Filme", "DVD de Música", "HD", "Livro", "Revista", "PDF", "Texto Impresso", " ", " " }));
        cbMidias.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cbMidiasItemStateChanged(evt);
            }
        });
        panelCategoria.add(cbMidias);

        add(panelCategoria);
        panelCategoria.setBounds(10, 10, 230, 20);

        panelOptional1.setLayout(new javax.swing.BoxLayout(panelOptional1, javax.swing.BoxLayout.LINE_AXIS));

        labelGenero.setText("  Gênero:");
        labelGenero.setEnabled(false);
        panelOptional1.add(labelGenero);
        panelOptional1.add(filler11);

        tfGenero.setEnabled(false);
        panelOptional1.add(tfGenero);
        panelOptional1.add(filler10);

        labelArtista.setText("Artista:");
        labelArtista.setEnabled(false);
        panelOptional1.add(labelArtista);
        panelOptional1.add(filler12);

        tfArtista.setEnabled(false);
        panelOptional1.add(tfArtista);

        add(panelOptional1);
        panelOptional1.setBounds(10, 250, 570, 20);

        panelOpcional2.setLayout(new javax.swing.BoxLayout(panelOpcional2, javax.swing.BoxLayout.LINE_AXIS));

        labelAutor.setText("  Autor:");
        labelAutor.setEnabled(false);
        panelOpcional2.add(labelAutor);
        panelOpcional2.add(filler13);

        tfAutor.setEnabled(false);
        panelOpcional2.add(tfAutor);
        panelOpcional2.add(filler14);

        labelEditora.setText("*Editora:");
        labelEditora.setEnabled(false);
        panelOpcional2.add(labelEditora);
        panelOpcional2.add(filler16);

        tfEditora.setEnabled(false);
        panelOpcional2.add(tfEditora);
        panelOpcional2.add(filler15);

        labelNEdicao.setText("Nº de Edição:");
        labelNEdicao.setEnabled(false);
        panelOpcional2.add(labelNEdicao);
        panelOpcional2.add(filler17);

        tfNEdicao.setColumns(2);
        tfNEdicao.setEnabled(false);
        tfNEdicao.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfNEdicaoKeyTyped(evt);
            }
        });
        panelOpcional2.add(tfNEdicao);

        add(panelOpcional2);
        panelOpcional2.setBounds(10, 290, 570, 20);
    }// </editor-fold>//GEN-END:initComponents

private void botaoCadastrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoCadastrarActionPerformed
    Midia midia;
    if(cbMidias.getSelectedItem().equals("Escolha...") || 
       tfLocal.getText().isEmpty() || (cbMidias.getSelectedItem().equals("Revista") && tfEditora.getText().isEmpty())){
        if(cbMidias.getSelectedItem().equals("Escolha..."))
            JOptionPane.showMessageDialog(null, "Escolha o tipo de Mídia!", "Atenção", JOptionPane.WARNING_MESSAGE);
        else if(tfLocal.getText().isEmpty()){
            JOptionPane.showMessageDialog(null, "Localizacao é um campo obrigatório!", "Atenção", JOptionPane.WARNING_MESSAGE);
            tfLocal.requestFocus();
        }
        if(cbMidias.getSelectedItem().equals("Revista") && tfEditora.getText().isEmpty()){
            JOptionPane.showMessageDialog(null, "Editora é obrigatório quando a mídia for Revista!", "Atenção", JOptionPane.WARNING_MESSAGE);
            tfEditora.requestFocus();
        }
    }
    else{
        if(cbMidias.getSelectedItem().equals("CD de Aplicativo")){
            midia = new CdAplicativo(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());   
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("CD de Música")){
            midia = new CdMusica(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((CdMusica)midia).setArtista(tfArtista.getText());
            ((CdMusica)midia).setGenero(tfGenero.getText());    
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("DVD de Aplicativo")){
            midia = new DvdAplicativo(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());   
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("DVD de Música")){
            midia = new DvdMusica(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((DvdMusica)midia).setArtista(tfArtista.getText());
            ((DvdMusica)midia).setGenero(tfGenero.getText());
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("DVD de Filme")){
            midia = new DvdFilme(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());        
            ((DvdFilme)midia).setGenero(tfGenero.getText());
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("HD")){
            midia = new Hd(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("Livro")){
            midia = new Livro(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((Livro)midia).setAutor(tfAutor.getText());    
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("PDF")){
            midia = new Pdf(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());    
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("Revista")){
            midia = new Revista(tfLocal.getText(), tfEditora.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());
            if(tfNEdicao.getText().isEmpty())
                ((Revista)midia).setNEdicao(0);
            else
                ((Revista)midia).setNEdicao(Integer.parseInt(tfNEdicao.getText()));
            Controle.inserirMidia(midia);
        }
        else if(cbMidias.getSelectedItem().equals("Texto Impresso")){
            midia = new TextoImpresso(tfLocal.getText());
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((TextoImpresso)midia).setAutor(tfAutor.getText());
            Controle.inserirMidia(midia);
        }
    }
    
}//GEN-LAST:event_botaoCadastrarActionPerformed

private void botaoLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoLimparActionPerformed
      this.LimparTodosCampos();
}//GEN-LAST:event_botaoLimparActionPerformed

private void cbMidiasItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbMidiasItemStateChanged
    String midia = (String) cbMidias.getSelectedItem();
    this.DesabilitaCamposOpcionais();
    Tela.LimparCampos(tfGenero, tfArtista, tfAutor, tfEditora, tfNEdicao);
    if(midia.equals("CD de Música") || midia.equals("DVD de Música")){
        Tela.HabilitaCampos(labelArtista, tfArtista, labelGenero, tfGenero);
    }
    else if(midia.equals("DVD de Filme")){
        Tela.HabilitaCampos(labelGenero, tfGenero);
    }
    else if(midia.equals("Livro") || midia.equals("Texto Impresso")){
        Tela.HabilitaCampos(labelAutor, tfAutor);
    }
    else if(midia.equals("Revista")){
        Tela.HabilitaCampos(labelEditora, tfEditora, labelNEdicao, tfNEdicao);
    }
    else
        this.DesabilitaCamposOpcionais();
}//GEN-LAST:event_cbMidiasItemStateChanged

private void tfNEdicaoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfNEdicaoKeyTyped
   char letra = evt.getKeyChar();
    if((letra < '0' || letra > '9') && letra != KeyEvent.VK_BACK_SPACE){
	JOptionPane.showMessageDialog(null, "Use apenas números!", "Aviso!", JOptionPane.INFORMATION_MESSAGE);
	evt.consume();
    }
}//GEN-LAST:event_tfNEdicaoKeyTyped

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botaoCadastrar;
    private javax.swing.JButton botaoLimpar;
    private javax.swing.JComboBox cbMidias;
    private javax.swing.Box.Filler filler1;
    private javax.swing.Box.Filler filler10;
    private javax.swing.Box.Filler filler11;
    private javax.swing.Box.Filler filler12;
    private javax.swing.Box.Filler filler13;
    private javax.swing.Box.Filler filler14;
    private javax.swing.Box.Filler filler15;
    private javax.swing.Box.Filler filler16;
    private javax.swing.Box.Filler filler17;
    private javax.swing.Box.Filler filler2;
    private javax.swing.Box.Filler filler4;
    private javax.swing.Box.Filler filler5;
    private javax.swing.Box.Filler filler6;
    private javax.swing.Box.Filler filler7;
    private javax.swing.Box.Filler filler8;
    private javax.swing.JLabel labelArtista;
    private javax.swing.JLabel labelAutor;
    private javax.swing.JLabel labelCampOb;
    private javax.swing.JLabel labelCategoria;
    private javax.swing.JLabel labelEditora;
    private javax.swing.JLabel labelGenero;
    private javax.swing.JLabel labelLocal;
    private javax.swing.JLabel labelNEdicao;
    private javax.swing.JLabel labelObs;
    private javax.swing.JLabel labelTitulo;
    private javax.swing.JPanel panelBotoes;
    private javax.swing.JPanel panelCategoria;
    private javax.swing.JPanel panelLocal;
    private javax.swing.JPanel panelObs;
    private javax.swing.JPanel panelOpcional2;
    private javax.swing.JPanel panelOptional1;
    private javax.swing.JPanel panelTitulo;
    private javax.swing.JScrollPane spObs;
    private javax.swing.JTextArea taObs;
    private javax.swing.JTextField tfArtista;
    private javax.swing.JTextField tfAutor;
    private javax.swing.JTextField tfEditora;
    private javax.swing.JTextField tfGenero;
    private javax.swing.JTextField tfLocal;
    private javax.swing.JTextField tfNEdicao;
    private javax.swing.JTextField tfTitulo;
    // End of variables declaration//GEN-END:variables

 
}
